Since their emergence from University and Industry laboratories over 60 years ago, general-purpose electronic computers and computing systems have undergone explosive growth. In addition to general-purpose systems, application specific computing or special purpose computing (sometimes called embedded computing) has expanded with equal vigor. Together, the two types of computing have penetrated nearly all aspects of modern life.
The hardware and software foundations for both general purpose and embedded computing systems are the microprocessor or microcontroller, and the operating system. The vast majority of computers are based on the stored program sequential computing architecture developed by John Von Neumann. Computers based on this architecture are called Von Neumann machines.
This architecture has served us well for over 50 years as computing has permeated all aspects of our lives. But there are a number of emerging problems as computing becomes more diverse and complicated. The constant efforts to increase speed and processing power of computers is beginning to take its toll in complexity as well as extracting greater economic cost as technological lifetimes shorten. A number of techniques employed to expand the capabilities of general purpose computing have added ever-increasing burdens of complexity and maintainability. These techniques include: use of interrupts, multitasking real time pre-emptive prioritized operating systems, cache memory and branch predictive execution, peer to peer communications, event oriented operation, among others. Each of these techniques adds complexity to computer systems, increasing the costs of development and system maintenance. This added system complexity also makes verification of deterministic operation and calculation of worst-case response times increasingly difficult. Systems become so complex that timing analysis errors are easily made. Some of the techniques listed above—such as prioritization and preemption were developed to provide a method to guarantee worst case response times for critical tasks. But this added benefit has a consequence in greatly increased system complexity. Theoretically, these techniques may serve their purpose. As a practical matter, the systems become so complex there is a substantial risk that the system is not analyzed properly, design errors are made, and worst case response times are not met. While there has never been a great need for deterministic real time general purpose computers, the complexity of multi tasking real time operating systems has begun to jeopardize the determinism and real time operation of special purpose computers for which real time operation is essential.
Other methods used to improve software productivity have now become so complex and specialized that their original benefits are being eroded. One prime example of this is object-oriented programming. Hardware and software obsolescence have become so rapid that equipment that may be adequate for 15 or 20 years must be scrapped much earlier due to early component obsolescence (making repairs problematical) and software incompatibility. Design re-usability, much talked about, is almost never practiced, as systems are not designed for easy upgrade to new hardware and software technologies. Indeed, obsolescence has always been in the interest of equipment suppliers, but almost never in the interest of the users of that equipment.
The purpose of this invention is to address all of these emerging problems of current general and special purpose computers and enable the development of computing systems free from these concerns.